package com.linyu.huawei.simple;

import java.util.Scanner;

/**
 * 数字反转打印
 * @author 23087
 */
public class DigitalReversePrinting {

    public static void main(String[] args) {

    // =================================== 第一次解法 ====================================================================
//        Scanner sc = new Scanner(System.in);
//        System.out.print("请输入行数：");
//        int lines = sc.nextInt();
//        lines++;
//        // 预留间隔数: （行数 - 1） * （4 + 4）
//        int num = (lines - 1) * (4 + 4);
//        for (int one = 0; one < lines; one++) {
//            int v = num / 2 - 2 -(one - 1) * 4;
//            String str = "";
//            for (int i = 0; i < v; i++) {
//                str = str + " ";
//            }
//            // 每行的数为： one! + 1, 算出当前行的起始数
//            int startNum = 0;
//            // ----- 真正的去开始打印：奇数行 / 偶数行
//            if (one % 2 == 1){
//                for (int i = 0; i < one; i++) {
//                    startNum = startNum + i;
//                }
//                startNum++;
//                for (int i = 0; i < one; i++) {
//                    str = str + startNum;
//                    int length = String.valueOf(startNum).length();
//                    if (length < 4){
//                        for (int i1 = 0; i1 < 4 - length; i1++) {
//                            str = str + "*";
//                        }
//                    }
//                    for (int i1 = 0; i1 < 4; i1++) {
//                        str = str + " ";
//                    }
//                    startNum++;
//                }
//            }else {
//                // 如果是偶数，倒着来
//                for (int i = 0; i < one + 1; i++) {
//                    startNum = startNum + i;
//                }
//                for (int i = 0; i < one; i++) {
//                    str = str + startNum;
//                    int length = String.valueOf(startNum).length();
//                    if (length < 4){
//                        for (int i1 = 0; i1 < 4 - length; i1++) {
//                            str = str + "*";
//                        }
//                    }
//                    for (int i1 = 0; i1 < 4; i1++) {
//                        str = str + " ";
//                    }
//                    startNum--;
//                }
//            }
//            System.out.println(str);
//        }

        // =================================== 第二次解法 ====================================================================

        Scanner sc = new Scanner(System.in);
        System.out.print("请输入行数：");
        int lines = sc.nextInt();

        // 一行最大占据中数
        int middle = lines * (4 + 4) / 2;
        for (int row = 1; row <= lines; row++) {
            // 每行的开始和结束数字
            int startNum = row * (row - 1) / 2 + 1;
            int endNum = row * (row + 1) / 2;
            // 先准备初始位置的字符串
            String str = "";
            int startPoint = middle - 2 - (row - 1) * 4;
            for (int i = 0; i < startPoint; i++) {
                str = str + " ";
            }
            // 如果是奇数行
            if (row % 2 == 1){
                for (int i = 0; i < row; i++) {
                    // 拼接字符，不足补充*
                    String start = String.valueOf(startNum);
                    str = str + start;
                    for (int j = 0; j < 4 - start.length(); j++) {
                        str = str + "*";
                    }
                    for (int x = 0; x < 4; x++) {
                        str = str + " ";
                    }
                    startNum++;
                }
            }else {
                // 如果是偶数
                for (int i = 0; i < row; i++) {
                    // 拼接字符，不足补充*
                    String start = String.valueOf(endNum);
                    str = str + start;
                    for (int j = 0; j < 4 - start.length(); j++) {
                        str = str + "*";
                    }
                    for (int x = 0; x < 4; x++) {
                        str = str + " ";
                    }
                    endNum--;
                }
            }
            System.out.println(str);
        }
    }

}
